package com.jiajia.study.mylist.stack;

import com.jiajia.study.mylist.MyLinkedList;
import com.jiajia.study.mylist.MyList;

/**
 *
 * 方式2  组合的模式来实现，动态数组或者链表作为栈的一部分
 * 这样的好处就是栈可以控制自己的接口
 * @author : zjj
 * @date : 2021/1/15 10:59
 */
public class MyStack2<E> {


    private MyList<E> myList = new MyLinkedList<E>();

    /**
     * 弹出栈顶元素
     * @return  弹出的元素
     */
    public E pop(){
        return myList.remove(myList.size() - 1);
    }

    /**
     * 往栈顶插入一个元素
     * @param element   元素
     */
    public void push(E element){
        myList.add(element);
    }

    /**
     * 查看栈顶的元素，不删除
     * @return  栈顶元素
     */
    public E top(){
        return myList.get(myList.size() - 1);
    }

    /**
     * 是否为空
     * @return  是否为空
     */
    public boolean isEmpty(){
        return myList.isEmpty();
    }

    /**
     * 获取栈的大小
     * @return  栈的大小
     */
    public int size(){
        return myList.size();
    }

    /**
     * 清空栈
     */
    public void clear(){
        myList.clear();
    }
}
